<file>misc/animationUtils.js</file>
<file>misc/config.js</file>
<file>misc/dateUtils.js</file>
+ <file>misc/dbusErrors.js</file>
<file>misc/dbusUtils.js</file>
<file>misc/dependencies.js</file>
<file>misc/errorUtils.js</file>
--- /dev/null
+/* eslint-disable no-unused-vars */
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+
+function decamelcase(str, sep) {
+ return str.replace(/(.)([A-Z])/g, `$1${sep}$2`);
+}
+
+function registerErrorDomain(domain, errorNames, prefix = 'org.gnome.Shell') {
+ const domainName =
+ `shell-${decamelcase(domain, '-').toLowerCase()}-error`;
+ const quark = GLib.quark_from_string(domainName);
+
+ for (const [code, name] of errorNames.entries()) {
+ Gio.dbus_error_register_error(quark,
+ code, `${prefix}.${domain}.Error.${name}`);
+ }
+ return quark;
+}
+
+function createErrorEnum(errorNames) {
+ const obj = {};
+
+ for (const [code, name] of errorNames.entries()) {
+ const propName = decamelcase(name, '_').toUpperCase();
+ obj[propName] = code;
+ }
+ return obj;
+}